/**
 * <copyright>
 *
 * Copyright (c) 2011 Zeligsoft (2009) Limited
 * All rights reserved.   This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 * 
 * Contributors: 
 *   Zeligsoft (2009) Limited - Initial API and implementation
 *
 * </copyright>
 *
 */
package org.omg.deployment.util;

import java.util.List;

import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.EObject;
import org.omg.deployment.*;
import org.omg.deployment.AliasType;
import org.omg.deployment.Any;
import org.omg.deployment.ArrayType;
import org.omg.deployment.ArtifactDeploymentDescription;
import org.omg.deployment.BoundedStringType;
import org.omg.deployment.Bridge;
import org.omg.deployment.ComponentExternalPortEndpoint;
import org.omg.deployment.ComponentInterfaceDescription;
import org.omg.deployment.ComponentPortDescription;
import org.omg.deployment.ComponentPropertyDescription;
import org.omg.deployment.ConnectionResourceDeploymentDescription;
import org.omg.deployment.DataType;
import org.omg.deployment.DataValue;
import org.omg.deployment.DeploymentPackage;
import org.omg.deployment.DeploymentPlan;
import org.omg.deployment.DocumentRoot;
import org.omg.deployment.Domain;
import org.omg.deployment.EnumType;
import org.omg.deployment.ExternalReferenceEndpoint;
import org.omg.deployment.FixedType;
import org.omg.deployment.ImplementationDependency;
import org.omg.deployment.InstanceDeploymentDescription;
import org.omg.deployment.InstanceResourceDeploymentDescription;
import org.omg.deployment.Interconnect;
import org.omg.deployment.MonolithicDeploymentDescription;
import org.omg.deployment.NamedValue;
import org.omg.deployment.Node;
import org.omg.deployment.ObjrefType;
import org.omg.deployment.PlanConnectionDescription;
import org.omg.deployment.PlanLocality;
import org.omg.deployment.PlanPropertyMapping;
import org.omg.deployment.PlanSubcomponentPortEndpoint;
import org.omg.deployment.PlanSubcomponentPropertyReference;
import org.omg.deployment.Property;
import org.omg.deployment.Requirement;
import org.omg.deployment.Resource;
import org.omg.deployment.ResourceDeploymentDescription;
import org.omg.deployment.SatisfierProperty;
import org.omg.deployment.SequenceType;
import org.omg.deployment.SharedResource;
import org.omg.deployment.StructMemberType;
import org.omg.deployment.StructType;
import org.omg.deployment.UnionMemberType;
import org.omg.deployment.UnionType;
import org.omg.deployment.ValueMemberType;
import org.omg.deployment.ValueType;
import org.omg.xmi.XMI;

/**
 * <!-- begin-user-doc -->
 * The <b>Switch</b> for the model's inheritance hierarchy.
 * It supports the call {@link #doSwitch(EObject) doSwitch(object)}
 * to invoke the <code>caseXXX</code> method for each class of the model,
 * starting with the actual class of the object
 * and proceeding up the inheritance hierarchy
 * until a non-null result is returned,
 * which is the result of the switch.
 * <!-- end-user-doc -->
 * @see org.omg.deployment.DeploymentPackage
 * @generated
 */
public class DeploymentSwitch<T> {
	/**
	 * The cached model package
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected static DeploymentPackage modelPackage;

	/**
	 * Creates an instance of the switch.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public DeploymentSwitch() {
		if (modelPackage == null) {
			modelPackage = DeploymentPackage.eINSTANCE;
		}
	}

	/**
	 * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the first non-null result returned by a <code>caseXXX</code> call.
	 * @generated
	 */
	public T doSwitch(EObject theEObject) {
		return doSwitch(theEObject.eClass(), theEObject);
	}

	/**
	 * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the first non-null result returned by a <code>caseXXX</code> call.
	 * @generated
	 */
	protected T doSwitch(EClass theEClass, EObject theEObject) {
		if (theEClass.eContainer() == modelPackage) {
			return doSwitch(theEClass.getClassifierID(), theEObject);
		} else {
			List<EClass> eSuperTypes = theEClass.getESuperTypes();
			return eSuperTypes.isEmpty() ? defaultCase(theEObject) : doSwitch(
					eSuperTypes.get(0), theEObject);
		}
	}

	/**
	 * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the first non-null result returned by a <code>caseXXX</code> call.
	 * @generated
	 */
	protected T doSwitch(int classifierID, EObject theEObject) {
		switch (classifierID) {
		case DeploymentPackage.ALIAS_TYPE: {
			AliasType aliasType = (AliasType) theEObject;
			T result = caseAliasType(aliasType);
			if (result == null)
				result = caseXMI(aliasType);
			if (result == null)
				result = defaultCase(theEObject);
			return result;
		}
		case DeploymentPackage.ANY: {
			Any any = (Any) theEObject;
			T result = caseAny(any);
			if (result == null)
				result = caseXMI(any);
			if (result == null)
				result = defaultCase(theEObject);
			return result;
		}
		case DeploymentPackage.ARRAY_TYPE: {
			ArrayType arrayType = (ArrayType) theEObject;
			T result = caseArrayType(arrayType);
			if (result == null)
				result = caseXMI(arrayType);
			if (result == null)
				result = defaultCase(theEObject);
			return result;
		}
		case DeploymentPackage.ARTIFACT_DEPLOYMENT_DESCRIPTION: {
			ArtifactDeploymentDescription artifactDeploymentDescription = (ArtifactDeploymentDescription) theEObject;
			T result = caseArtifactDeploymentDescription(artifactDeploymentDescription);
			if (result == null)
				result = caseXMI(artifactDeploymentDescription);
			if (result == null)
				result = defaultCase(theEObject);
			return result;
		}
		case DeploymentPackage.BOUNDED_STRING_TYPE: {
			BoundedStringType boundedStringType = (BoundedStringType) theEObject;
			T result = caseBoundedStringType(boundedStringType);
			if (result == null)
				result = defaultCase(theEObject);
			return result;
		}
		case DeploymentPackage.BRIDGE: {
			Bridge bridge = (Bridge) theEObject;
			T result = caseBridge(bridge);
			if (result == null)
				result = defaultCase(theEObject);
			return result;
		}
		case DeploymentPackage.COMPONENT_EXTERNAL_PORT_ENDPOINT: {
			ComponentExternalPortEndpoint componentExternalPortEndpoint = (ComponentExternalPortEndpoint) theEObject;
			T result = caseComponentExternalPortEndpoint(componentExternalPortEndpoint);
			if (result == null)
				result = caseXMI(componentExternalPortEndpoint);
			if (result == null)
				result = defaultCase(theEObject);
			return result;
		}
		case DeploymentPackage.COMPONENT_INTERFACE_DESCRIPTION: {
			ComponentInterfaceDescription componentInterfaceDescription = (ComponentInterfaceDescription) theEObject;
			T result = caseComponentInterfaceDescription(componentInterfaceDescription);
			if (result == null)
				result = defaultCase(theEObject);
			return result;
		}
		case DeploymentPackage.COMPONENT_PORT_DESCRIPTION: {
			ComponentPortDescription componentPortDescription = (ComponentPortDescription) theEObject;
			T result = caseComponentPortDescription(componentPortDescription);
			if (result == null)
				result = defaultCase(theEObject);
			return result;
		}
		case DeploymentPackage.COMPONENT_PROPERTY_DESCRIPTION: {
			ComponentPropertyDescription componentPropertyDescription = (ComponentPropertyDescription) theEObject;
			T result = caseComponentPropertyDescription(componentPropertyDescription);
			if (result == null)
				result = defaultCase(theEObject);
			return result;
		}
		case DeploymentPackage.CONNECTION_RESOURCE_DEPLOYMENT_DESCRIPTION: {
			ConnectionResourceDeploymentDescription connectionResourceDeploymentDescription = (ConnectionResourceDeploymentDescription) theEObject;
			T result = caseConnectionResourceDeploymentDescription(connectionResourceDeploymentDescription);
			if (result == null)
				result = caseResourceDeploymentDescription(connectionResourceDeploymentDescription);
			if (result == null)
				result = caseXMI(connectionResourceDeploymentDescription);
			if (result == null)
				result = defaultCase(theEObject);
			return result;
		}
		case DeploymentPackage.DATA_TYPE: {
			DataType dataType = (DataType) theEObject;
			T result = caseDataType(dataType);
			if (result == null)
				result = caseXMI(dataType);
			if (result == null)
				result = defaultCase(theEObject);
			return result;
		}
		case DeploymentPackage.DATA_VALUE: {
			DataValue dataValue = (DataValue) theEObject;
			T result = caseDataValue(dataValue);
			if (result == null)
				result = defaultCase(theEObject);
			return result;
		}
		case DeploymentPackage.DEPLOYMENT_PLAN: {
			DeploymentPlan deploymentPlan = (DeploymentPlan) theEObject;
			T result = caseDeploymentPlan(deploymentPlan);
			if (result == null)
				result = defaultCase(theEObject);
			return result;
		}
		case DeploymentPackage.DOCUMENT_ROOT: {
			DocumentRoot documentRoot = (DocumentRoot) theEObject;
			T result = caseDocumentRoot(documentRoot);
			if (result == null)
				result = defaultCase(theEObject);
			return result;
		}
		case DeploymentPackage.DOMAIN: {
			Domain domain = (Domain) theEObject;
			T result = caseDomain(domain);
			if (result == null)
				result = defaultCase(theEObject);
			return result;
		}
		case DeploymentPackage.ENUM_TYPE: {
			EnumType enumType = (EnumType) theEObject;
			T result = caseEnumType(enumType);
			if (result == null)
				result = defaultCase(theEObject);
			return result;
		}
		case DeploymentPackage.EXTERNAL_REFERENCE_ENDPOINT: {
			ExternalReferenceEndpoint externalReferenceEndpoint = (ExternalReferenceEndpoint) theEObject;
			T result = caseExternalReferenceEndpoint(externalReferenceEndpoint);
			if (result == null)
				result = caseXMI(externalReferenceEndpoint);
			if (result == null)
				result = defaultCase(theEObject);
			return result;
		}
		case DeploymentPackage.FIXED_TYPE: {
			FixedType fixedType = (FixedType) theEObject;
			T result = caseFixedType(fixedType);
			if (result == null)
				result = defaultCase(theEObject);
			return result;
		}
		case DeploymentPackage.IMPLEMENTATION_DEPENDENCY: {
			ImplementationDependency implementationDependency = (ImplementationDependency) theEObject;
			T result = caseImplementationDependency(implementationDependency);
			if (result == null)
				result = caseXMI(implementationDependency);
			if (result == null)
				result = defaultCase(theEObject);
			return result;
		}
		case DeploymentPackage.INSTANCE_DEPLOYMENT_DESCRIPTION: {
			InstanceDeploymentDescription instanceDeploymentDescription = (InstanceDeploymentDescription) theEObject;
			T result = caseInstanceDeploymentDescription(instanceDeploymentDescription);
			if (result == null)
				result = caseXMI(instanceDeploymentDescription);
			if (result == null)
				result = defaultCase(theEObject);
			return result;
		}
		case DeploymentPackage.INSTANCE_RESOURCE_DEPLOYMENT_DESCRIPTION: {
			InstanceResourceDeploymentDescription instanceResourceDeploymentDescription = (InstanceResourceDeploymentDescription) theEObject;
			T result = caseInstanceResourceDeploymentDescription(instanceResourceDeploymentDescription);
			if (result == null)
				result = caseResourceDeploymentDescription(instanceResourceDeploymentDescription);
			if (result == null)
				result = caseXMI(instanceResourceDeploymentDescription);
			if (result == null)
				result = defaultCase(theEObject);
			return result;
		}
		case DeploymentPackage.INTERCONNECT: {
			Interconnect interconnect = (Interconnect) theEObject;
			T result = caseInterconnect(interconnect);
			if (result == null)
				result = defaultCase(theEObject);
			return result;
		}
		case DeploymentPackage.MONOLITHIC_DEPLOYMENT_DESCRIPTION: {
			MonolithicDeploymentDescription monolithicDeploymentDescription = (MonolithicDeploymentDescription) theEObject;
			T result = caseMonolithicDeploymentDescription(monolithicDeploymentDescription);
			if (result == null)
				result = caseXMI(monolithicDeploymentDescription);
			if (result == null)
				result = defaultCase(theEObject);
			return result;
		}
		case DeploymentPackage.NAMED_VALUE: {
			NamedValue namedValue = (NamedValue) theEObject;
			T result = caseNamedValue(namedValue);
			if (result == null)
				result = defaultCase(theEObject);
			return result;
		}
		case DeploymentPackage.NODE: {
			Node node = (Node) theEObject;
			T result = caseNode(node);
			if (result == null)
				result = defaultCase(theEObject);
			return result;
		}
		case DeploymentPackage.OBJREF_TYPE: {
			ObjrefType objrefType = (ObjrefType) theEObject;
			T result = caseObjrefType(objrefType);
			if (result == null)
				result = defaultCase(theEObject);
			return result;
		}
		case DeploymentPackage.PLAN_CONNECTION_DESCRIPTION: {
			PlanConnectionDescription planConnectionDescription = (PlanConnectionDescription) theEObject;
			T result = casePlanConnectionDescription(planConnectionDescription);
			if (result == null)
				result = caseXMI(planConnectionDescription);
			if (result == null)
				result = defaultCase(theEObject);
			return result;
		}
		case DeploymentPackage.PLAN_LOCALITY: {
			PlanLocality planLocality = (PlanLocality) theEObject;
			T result = casePlanLocality(planLocality);
			if (result == null)
				result = caseXMI(planLocality);
			if (result == null)
				result = defaultCase(theEObject);
			return result;
		}
		case DeploymentPackage.PLAN_PROPERTY_MAPPING: {
			PlanPropertyMapping planPropertyMapping = (PlanPropertyMapping) theEObject;
			T result = casePlanPropertyMapping(planPropertyMapping);
			if (result == null)
				result = caseXMI(planPropertyMapping);
			if (result == null)
				result = defaultCase(theEObject);
			return result;
		}
		case DeploymentPackage.PLAN_SUBCOMPONENT_PORT_ENDPOINT: {
			PlanSubcomponentPortEndpoint planSubcomponentPortEndpoint = (PlanSubcomponentPortEndpoint) theEObject;
			T result = casePlanSubcomponentPortEndpoint(planSubcomponentPortEndpoint);
			if (result == null)
				result = caseXMI(planSubcomponentPortEndpoint);
			if (result == null)
				result = defaultCase(theEObject);
			return result;
		}
		case DeploymentPackage.PLAN_SUBCOMPONENT_PROPERTY_REFERENCE: {
			PlanSubcomponentPropertyReference planSubcomponentPropertyReference = (PlanSubcomponentPropertyReference) theEObject;
			T result = casePlanSubcomponentPropertyReference(planSubcomponentPropertyReference);
			if (result == null)
				result = caseXMI(planSubcomponentPropertyReference);
			if (result == null)
				result = defaultCase(theEObject);
			return result;
		}
		case DeploymentPackage.PROPERTY: {
			Property property = (Property) theEObject;
			T result = caseProperty(property);
			if (result == null)
				result = caseXMI(property);
			if (result == null)
				result = defaultCase(theEObject);
			return result;
		}
		case DeploymentPackage.REQUIREMENT: {
			Requirement requirement = (Requirement) theEObject;
			T result = caseRequirement(requirement);
			if (result == null)
				result = caseXMI(requirement);
			if (result == null)
				result = defaultCase(theEObject);
			return result;
		}
		case DeploymentPackage.RESOURCE: {
			Resource resource = (Resource) theEObject;
			T result = caseResource(resource);
			if (result == null)
				result = defaultCase(theEObject);
			return result;
		}
		case DeploymentPackage.RESOURCE_DEPLOYMENT_DESCRIPTION: {
			ResourceDeploymentDescription resourceDeploymentDescription = (ResourceDeploymentDescription) theEObject;
			T result = caseResourceDeploymentDescription(resourceDeploymentDescription);
			if (result == null)
				result = caseXMI(resourceDeploymentDescription);
			if (result == null)
				result = defaultCase(theEObject);
			return result;
		}
		case DeploymentPackage.SATISFIER_PROPERTY: {
			SatisfierProperty satisfierProperty = (SatisfierProperty) theEObject;
			T result = caseSatisfierProperty(satisfierProperty);
			if (result == null)
				result = caseXMI(satisfierProperty);
			if (result == null)
				result = defaultCase(theEObject);
			return result;
		}
		case DeploymentPackage.SEQUENCE_TYPE: {
			SequenceType sequenceType = (SequenceType) theEObject;
			T result = caseSequenceType(sequenceType);
			if (result == null)
				result = defaultCase(theEObject);
			return result;
		}
		case DeploymentPackage.SHARED_RESOURCE: {
			SharedResource sharedResource = (SharedResource) theEObject;
			T result = caseSharedResource(sharedResource);
			if (result == null)
				result = defaultCase(theEObject);
			return result;
		}
		case DeploymentPackage.STRUCT_MEMBER_TYPE: {
			StructMemberType structMemberType = (StructMemberType) theEObject;
			T result = caseStructMemberType(structMemberType);
			if (result == null)
				result = defaultCase(theEObject);
			return result;
		}
		case DeploymentPackage.STRUCT_TYPE: {
			StructType structType = (StructType) theEObject;
			T result = caseStructType(structType);
			if (result == null)
				result = defaultCase(theEObject);
			return result;
		}
		case DeploymentPackage.UNION_MEMBER_TYPE: {
			UnionMemberType unionMemberType = (UnionMemberType) theEObject;
			T result = caseUnionMemberType(unionMemberType);
			if (result == null)
				result = defaultCase(theEObject);
			return result;
		}
		case DeploymentPackage.UNION_TYPE: {
			UnionType unionType = (UnionType) theEObject;
			T result = caseUnionType(unionType);
			if (result == null)
				result = defaultCase(theEObject);
			return result;
		}
		case DeploymentPackage.VALUE_MEMBER_TYPE: {
			ValueMemberType valueMemberType = (ValueMemberType) theEObject;
			T result = caseValueMemberType(valueMemberType);
			if (result == null)
				result = defaultCase(theEObject);
			return result;
		}
		case DeploymentPackage.VALUE_TYPE: {
			ValueType valueType = (ValueType) theEObject;
			T result = caseValueType(valueType);
			if (result == null)
				result = defaultCase(theEObject);
			return result;
		}
		default:
			return defaultCase(theEObject);
		}
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Alias Type</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Alias Type</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseAliasType(AliasType object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Any</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Any</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseAny(Any object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Array Type</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Array Type</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseArrayType(ArrayType object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Artifact Deployment Description</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Artifact Deployment Description</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseArtifactDeploymentDescription(
			ArtifactDeploymentDescription object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Bounded String Type</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Bounded String Type</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseBoundedStringType(BoundedStringType object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Bridge</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Bridge</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseBridge(Bridge object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Component External Port Endpoint</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Component External Port Endpoint</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseComponentExternalPortEndpoint(
			ComponentExternalPortEndpoint object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Component Interface Description</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Component Interface Description</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseComponentInterfaceDescription(
			ComponentInterfaceDescription object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Component Port Description</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Component Port Description</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseComponentPortDescription(ComponentPortDescription object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Component Property Description</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Component Property Description</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseComponentPropertyDescription(
			ComponentPropertyDescription object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Connection Resource Deployment Description</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Connection Resource Deployment Description</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseConnectionResourceDeploymentDescription(
			ConnectionResourceDeploymentDescription object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Data Type</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Data Type</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseDataType(DataType object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Data Value</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Data Value</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseDataValue(DataValue object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Plan</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Plan</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseDeploymentPlan(DeploymentPlan object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Document Root</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Document Root</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseDocumentRoot(DocumentRoot object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Domain</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Domain</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseDomain(Domain object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Enum Type</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Enum Type</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseEnumType(EnumType object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>External Reference Endpoint</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>External Reference Endpoint</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseExternalReferenceEndpoint(ExternalReferenceEndpoint object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Fixed Type</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Fixed Type</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseFixedType(FixedType object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Implementation Dependency</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Implementation Dependency</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseImplementationDependency(ImplementationDependency object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Instance Deployment Description</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Instance Deployment Description</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseInstanceDeploymentDescription(
			InstanceDeploymentDescription object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Instance Resource Deployment Description</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Instance Resource Deployment Description</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseInstanceResourceDeploymentDescription(
			InstanceResourceDeploymentDescription object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Interconnect</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Interconnect</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseInterconnect(Interconnect object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Monolithic Deployment Description</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Monolithic Deployment Description</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseMonolithicDeploymentDescription(
			MonolithicDeploymentDescription object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Named Value</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Named Value</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseNamedValue(NamedValue object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Node</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Node</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseNode(Node object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Objref Type</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Objref Type</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseObjrefType(ObjrefType object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Plan Connection Description</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Plan Connection Description</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T casePlanConnectionDescription(PlanConnectionDescription object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Plan Locality</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Plan Locality</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T casePlanLocality(PlanLocality object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Plan Property Mapping</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Plan Property Mapping</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T casePlanPropertyMapping(PlanPropertyMapping object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Plan Subcomponent Port Endpoint</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Plan Subcomponent Port Endpoint</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T casePlanSubcomponentPortEndpoint(
			PlanSubcomponentPortEndpoint object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Plan Subcomponent Property Reference</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Plan Subcomponent Property Reference</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T casePlanSubcomponentPropertyReference(
			PlanSubcomponentPropertyReference object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Property</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Property</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseProperty(Property object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Requirement</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Requirement</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseRequirement(Requirement object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Resource</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Resource</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseResource(Resource object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Resource Deployment Description</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Resource Deployment Description</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseResourceDeploymentDescription(
			ResourceDeploymentDescription object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Satisfier Property</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Satisfier Property</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseSatisfierProperty(SatisfierProperty object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Sequence Type</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Sequence Type</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseSequenceType(SequenceType object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Shared Resource</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Shared Resource</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseSharedResource(SharedResource object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Struct Member Type</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Struct Member Type</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseStructMemberType(StructMemberType object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Struct Type</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Struct Type</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseStructType(StructType object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Union Member Type</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Union Member Type</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseUnionMemberType(UnionMemberType object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Union Type</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Union Type</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseUnionType(UnionType object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Value Member Type</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Value Member Type</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseValueMemberType(ValueMemberType object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Value Type</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Value Type</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseValueType(ValueType object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>XMI</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>XMI</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseXMI(XMI object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>EObject</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch, but this is the last case anyway.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>EObject</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject)
	 * @generated
	 */
	public T defaultCase(EObject object) {
		return null;
	}

} //DeploymentSwitch
